#version 450
#extension GL_ARB_separate_shader_objects : enable

// 顶点输入：Location 必须匹配 C++ 中的 getAttributeDescriptions()
// location 0: 位置 (pos)
layout(location = 0) in vec3 inPos; 
// location 1: 颜色 (color)
layout(location = 1) in vec3 inColor; 

// Uniform Buffer Object (UBO) 绑定：binding 必须匹配 C++ 中的 descriptorSetLayout
layout(binding = 0) uniform UniformBufferObject {
    mat4 model;
    mat4 view;
    mat4 proj;
} ubo;

// 输出到片段着色器的颜色 (Location 0)
layout(location = 0) out vec3 fragColor; 

void main() {
    // 关键：将顶点坐标通过 MVP 矩阵转换为裁剪空间坐标
    gl_Position = ubo.proj * ubo.view * ubo.model * vec4(inPos, 1.0);
    
    // 将颜色传递给片段着色器进行插值
    fragColor = inColor;
}